/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controle;

import Base.*;
import DAO.DaoDados;
import DAO.DaoPergunta;
import DAO.DaoResposta;
import DAO.DaoTema;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Fabio
 */
public class ControlePergunta {

    private String tema;
    private String pergunta;
    private String comentPergunta;
    private String linkPergunta;
    private byte[] imagem;
    private String altA;
    private String altB;
    private String altC;
    private String altD;
    private String altCorreta;
    private DaoDados dd;

    public ControlePergunta(String tema, String pergunta, String comentPergunta, String linkPergunta, byte[] imagem, String altA, String altB, String altC, String altD, String AltCorreta) {
        this.tema = tema;
        this.pergunta = pergunta;
        this.comentPergunta = comentPergunta;
        this.linkPergunta = linkPergunta;
        this.imagem = imagem;
        this.altA = altA;
        this.altB = altB;
        this.altC = altC;
        this.altD = altD;
        this.altCorreta = AltCorreta;
    }

    public ControlePergunta() {
        dd = new DaoDados();
    }

    public int InsereDB(String tema, int tem, String pergunta, String comentPerg, String linkPerg, 
            String caminho, String altA, String altB, String altC, String altD, String correta) {

       
        DaoTema dt = new DaoTema();
        DaoPergunta dp = new DaoPergunta();
        DaoResposta dr = new DaoResposta();
        
        /*
         * 1 - Sucesso 
         * 3 - Não foi possível inserir / erro no banco
         * 4 - Não foi possível converter a imagem
         */
        
        boolean resp;
        
        if(tem == -1)//novo tema, precisa ser inserido no banco
        {
            try
            {
                tem = dt.verificarTema(tema);
            }
            catch(Exception e){
                return 3;
            }
        }
        //Se não retornou, o tema pode ser inserido
        
        if(tem == -1){
             try
            {
                Tema t = new Tema(-1, tema);
                tem = dt.inserirTema(t);
            }
            catch(Exception e)
            {
                return 3;
            }
        }
       
        
        //inserir Pergunta
               
        byte [] imagem;
        if("".equals(caminho))
        {
           imagem = null;
        }
        else
        {
            try
            {
                imagem = ConvertByte.imageToByte(caminho);
            }
            catch(Exception e){
                return 4;
            }
        }
        Pergunta p = new Pergunta(-1, tem, pergunta, imagem, comentPerg, linkPerg);
        int perg = -1;
        try
        {
            perg = dp.inserirPergunta(p);
        }
        catch(Exception e)
        {
            return 3;
        }
           
        
        Resposta r1 = new Resposta(-1,perg,altA,false);
        Resposta r2 = new Resposta(-1,perg,altB,false);
        Resposta r3 = new Resposta(-1,perg,altC,false);
        Resposta r4 = new Resposta(-1,perg,altD,false);
        
       if(correta.equalsIgnoreCase("A")){
           r1.setCorreta(true);
       }
       else if(correta.equalsIgnoreCase("B")){
           r2.setCorreta(true);
       }
       else if(correta.equalsIgnoreCase("C")){
           r3.setCorreta(true);
       }
       else{
           r4.setCorreta(true);
       }
       
       try
       {
           if(!dr.inserirResposta(r1))
           {
               return 3;
           }
           else if(!dr.inserirResposta(r2)){
               return 3;
           }
           else if(!dr.inserirResposta(r3)){
               return 3;
           }
           else if(!dr.inserirResposta(r4)){
               return 3;
           }                   
       }
       catch(Exception e){
           return 3;
       }
       return 1;
    }

    public ArrayList<Dados> buscarDados() {        
        ArrayList<Dados> lista = dd.buscarDados();
        return lista;
    }

    public boolean delete(Dados sel) {
        
        return dd.delete(sel);
    }

    public int update(Dados dados, String tema, Tema selec, String questao, 
            String coment, String link, String caminho, String optA, String optB,
            String optC, String optD, String altCor) {
        
        return dd.update(dados, tema, selec, questao, coment, link, caminho, optA, optB,
            optC, optD, altCor);
    }
    
    public ArrayList<Pergunta> getRespostas(int cod){
        ArrayList<Pergunta> lista = dd.buscarDados(cod);
        return lista;
    }
}
